package cn.sc.hunter.framework.util;

/**
 * 转型操作工具类
 */
public final class CastUtil {

    /**
     * 转换为 String 类型
     */
    public static String castString(Object obj){
        return castString(obj, "");
    }

    /**
     * 转换为 String 类型(提供默认值)
     */
    public static String castString(Object obj, String defalutValue){
        return obj != null ? String.valueOf(obj) : defalutValue;
    }

    /**
     * 转换为 double 类型
     */
    public static double castDouble(Object obj){
        return castDouble(obj, 0);
    }

    /**
     * 转换为 double 类型(提供默认值)
     */
    public static double castDouble(Object obj, double defalutValue){
        double value = defalutValue;
        if (obj != null) {
            String str = castString(obj);
            if (StringUtil.isNotEmpty(str)){
                try{
                    value = Double.parseDouble(str);
                } catch (NumberFormatException e) {
                    value = defalutValue;
                }
            }
        }
        return value;
    }

    /**
     * 转换为 Long 类型
     */
    public static Long castLong(Object obj){
        return castLong(obj, 0L);
    }

    /**
     * 转换为 Long 类型(提供默认值)
     */
    public static Long castLong(Object obj, Long defalutValue){
        Long value = defalutValue;
        if (obj != null) {
            String str = castString(obj);
            if (StringUtil.isNotEmpty(str)){
                try{
                    value = Long.parseLong(str);
                } catch (NumberFormatException e) {
                    value = defalutValue;
                }
            }
        }
        return value;
    }

    /**
     * 转换为 int 类型
     */
    public static int castInt(Object obj){
        return castInt(obj, 0);
    }

    /**
     * 转换为 int 类型(提供默认值)
     */
    public static int castInt(Object obj, int defalutValue){
        int value = defalutValue;
        if (obj != null) {
            String str = castString(obj);
            if (StringUtil.isNotEmpty(str)){
                try{
                    value = Integer.parseInt(str);
                } catch (NumberFormatException e) {
                    value = defalutValue;
                }
            }
        }
        return value;
    }

    /**
     * 转换为 boolean 类型
     */
    public static boolean castBoolean(Object obj){
        return castBoolean(obj, false);
    }

    /**
     * 转换为 boolean 类型(提供默认值)
     */
    public static boolean castBoolean(Object obj, boolean defalutValue){
        boolean value = defalutValue;
        if (obj != null) {
            String str = castString(obj);
            if (StringUtil.isNotEmpty(str)){
                try{
                    value = Boolean.parseBoolean(str);
                } catch (NumberFormatException e) {
                    value = defalutValue;
                }
            }
        }
        return value;
    }
}
